package com.roads.agency.service;

import com.roads.agency.domain.AgencyBoq;
import com.roads.common.core.domain.entity.SysUser;
import com.roads.agency.domain.AgencyMeterageDetailConstruction;
import com.roads.agency.domain.AgencyMeterageDetailDefect;
import com.roads.agency.domain.AgencyMeterageDetailOther;
import com.roads.agency.domain.AgencyMeterageDetailWinter;
import com.roads.agency.domain.AgencyMeterageMaster;

import java.util.List;

/**
 * 代建计量细表Service接口
 *
 * @author nhp
 * @date 2023-08-09
 */
public interface IAgencyMeterageDetailService {

    /**
     * 查询代建计量施工期列表
     *
     * @param model 施工期
     * @return 施工期集合
     */
    List<AgencyMeterageDetailConstruction> selectConstructionList(AgencyMeterageDetailConstruction model);

    /**
     * 清单是否计量
     *
     * @param agencyBoq 清单
     * @return 结果
     */
    boolean hasMeterage(AgencyBoq agencyBoq);

    /**
     * 代建计量-施工期批量新增
     *
     * @param masterId 代建计量主表ID
     * @param ids 施工期清单id集合
     * @return 结果
     */
    int saveDetailConstruction(Long masterId, String ids);

    /**
     * 根据ID获取施工期清单详情
     *
     * @param id 自增主键
     * @return 施工期清单详情
     */
    AgencyMeterageDetailConstruction getDetailConstructionById(Long id);

    /**
     * 修改代建计量-施工期详情
     *
     * @param model 修改数据
     * @return 结果
     */
    int updateDetailConstruction(AgencyMeterageDetailConstruction model);

    /**
     * 删除代建计量-施工期详情
     *
     * @param ids 主键集合
     * @return 结果
     */
    int deleteDetailConstruction(Long[] ids);

    /**
     * 查询代建计量冬休期列表
     *
     * @param model 冬休期
     * @return 冬休期集合
     */
    List<AgencyMeterageDetailWinter> selectWinterList(AgencyMeterageDetailWinter model);

    /**
     * 代建计量-冬休期批量新增
     *
     * @param masterId 代建计量主表ID
     * @param ids 冬休期清单id集合
     * @return 结果
     */
    int saveDetailWinter(Long masterId, String ids);

    /**
     * 根据ID获取冬休期清单详情
     *
     * @param id 自增主键
     * @return 冬休期清单详情
     */
    AgencyMeterageDetailWinter getDetailWinterById(Long id);

    /**
     * 修改代建计量-冬休期详情
     *
     * @param model 修改数据
     * @return 结果
     */
    int updateDetailWinter(AgencyMeterageDetailWinter model);

    /**
     * 删除代建计量-冬休期详情
     *
     * @param ids 主键集合
     * @return 结果
     */
    int deleteDetailWinter(Long[] ids);

    /**
     * 查询代建计量缺陷责任期列表
     *
     * @param model 缺陷责任期
     * @return 缺陷责任期集合
     */
    List<AgencyMeterageDetailDefect> selectDefectList(AgencyMeterageDetailDefect model);

    /**
     * 代建计量-缺陷责任期批量新增
     *
     * @param masterId 代建计量主表ID
     * @param ids 缺陷责任期清单id集合
     * @return 结果
     */
    int saveDetailDefect(Long masterId, String ids);

    /**
     * 根据ID获取缺陷责任期清单详情
     *
     * @param id 自增主键
     * @return 缺陷责任期清单详情
     */
    AgencyMeterageDetailDefect getDetailDefectById(Long id);

    /**
     * 修改代建计量-缺陷责任期详情
     *
     * @param model 修改数据
     * @return 结果
     */
    int updateDetailDefect(AgencyMeterageDetailDefect model);

    /**
     * 删除代建计量-缺陷责任期详情
     *
     * @param ids 主键集合
     * @return 结果
     */
    int deleteDetailDefect(Long[] ids);

    /**
     * 查询代建计量其他支付项目列表
     *
     * @param model 其他支付项目
     * @return 施工期集合
     */
    List<AgencyMeterageDetailOther> selectOtherList(AgencyMeterageDetailOther model);

    /**
     * 根据ID获取其他支付项目详情
     *
     * @param id 自增主键
     * @return 其他支付项目详情
     */
    AgencyMeterageDetailOther getDetailOtherById(Long id);

    /**
     * 修改代建计量-其他支付项目详情
     *
     * @param model 修改数据
     * @return 结果
     */
    int updateDetailOther(AgencyMeterageDetailOther model);

    /**
     * 同步其他支付项目固定值
     * @param masterId 主表主键
     * @return 结果
     */
    int syncDetailOtherItem(Long masterId);

    /**
     * 创建代建计量-其他支付项目固定值集合
     *
     * @param master 主表信息
     * @param user 用户
     * @return 固定值支付项目集合
     */
    List<AgencyMeterageDetailOther> createMeterageOtherList(AgencyMeterageMaster master, SysUser user);

}
